-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: Security Domain and SCP11a/b/c features #164
Conversation
cfa5db9
to
69d6525
Compare
feat(scp11): Generate EC Key feat(sd): Reset Security Domain misc: Changed static analysis mode misc: SampleCode projects won't build nuget packages
Store identifiers in dictionary Utilize current and next TLV values Improve method functionality Enhance code readability
update auth-decrypt.md update auth-sign.md updated RSA key sizes in user manual files updated RSA key info in API docs updated docs and minor adjustments and new tests
support OATH and SCP support OTP and SCP support YubiHSM and SCP
69d6525
to
7a5053b
Compare
added YubiHsm SCP 11b tests
7a5053b
to
ff36d90
Compare
throws exception on invalid KeyParameters add docs
f2d9555
to
b6b97ad
Compare
1f6bff9
to
76fb610
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me. Thanks for addressing the issues from my comments and fixing the FIPS tests.
clarified docs (ScpKeyParameters) removed optional constructor (Scp11KeyParameters) added test for invalid constructor parameters (Scp11KeyParameters) fixed test for non fips hexadecimal notation for key ids in docstring increased sleep delay for integration test
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
SCP11[^1] uses asymmetric cryptography based on elliptic curves (NIST P-256) for authentication and key agreement. Compared to SCP03, it uses certificates instead of pre-shared keys, providing greater flexibility in cases where the two entities setting up the secure channel are not deployed in strict pairs. The secure channel can be embedded into complex use cases, such as: | ||
- Installation of payment credentials on wearables | ||
- Production systems | ||
- Remote provisioning of cell phone subscriptions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure these bullets are really relevant in a YubiKey-centric context.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I took them from the GPC SCP11 $2 and thought it may be of value as it describes some of the use cases. The existing document also legitimized the use of SCP by explaining some of the use cases. But since I'm already referencing GPC, perhaps thats enough?
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Show resolved
Hide resolved
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
Yubico.YubiKey/docs/users-manual/sdk-programming-guide/secure-channel-protocol.md
Outdated
Show resolved
Hide resolved
add validation and tests on keyId and keyVersionNumber (KeyReference) made replaceKvn into an optional parameter
misc: factory method for creating KeyReferences
d650a80
to
485b626
Compare
Changes to be committed: modified: ../docs/index.md
0a4b319
to
f80eca7
Compare
51a17ce
to
cf4b0ed
Compare
Description
This PR implements comprehensive support for SCP11a/b/c secure channels and enhances Security Domain functionality. It also enables OATH, OTP, and YubiHsm applications to operate over SCP connections.
Key Changes
../Scp/
namespace for improved secure channel managementSecurityDomainSession
New Components
SecurityDomainSession
: Application that manages the Security DomainScp03KeyParameters
: SCP03 key configurationScp11KeyParameters
: SCP11 key configurationKeyReference
: Refers to keys on the Yubikey Security DomainScp03State
: SCP03 state managementScp11State
: SCP11 state managementDeprecation and misc changes
../Scp03/
namespace../Scp11/
namespaceMigration Notes
The new architecture favors using
SecurityDomainSession
for Security Domain operations rather than individual command classes. Update existing implementations accordingly.Type of change
How has this been tested?
Tested using a 5.7.2 key and 5.7.4 FIPS key.
Test configuration:
Checklist:
dotnet format
to format my codeFootnotes
See Yubikey models (Multi-protocol, Security Key, FIPS, Bio, YubiHSM, YubiHSM FIPS) ↩